/**
 * Created by jiachenpan on 16/11/18.
 */

export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/* 英文，数字 */
export function validateNo(no) {
  const re = /^[A-Za-z0-9]{2,40}$/
  return re.test(no)
}


/* 数字 */
export function validateNum(num, len = 2) {
  const reg = new RegExp(`^[0-9]{${len},40}$`);
  return reg.test(num)
}

/* 是否为数字（仅正数），包括正整数、正小数、0 */
export function validateNumAndZero(num) {
  const reg = new RegExp(`^(([0-9])|([1-9]([0-9]+)))(.[0-9]+)?$`);
  return reg.test(num)
}

/* 中英文，数字，-，_ */
export function validateText(no) {
  const re = /^[\u4E00-\u9FA5A-Za-z0-9]{2,40}$/
  return re.test(no)
}

export function validUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}

/* 合法uri*/
export function validURL(url) {
  const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return reg.test(url)
}

/* 小写字母*/
export function validLowerCase(str) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 大写字母*/
export function validUpperCase(str) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 大小写字母*/
export function validAlphabets(str) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function validateEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,40}))$/
  return re.test(email)
}

/* 联系方式 */
export function validateContact(no) {
  // const re = /^1[0-9]{10}$/
  const re = /^[0-9-*]{7,12}$/
  return re.test(no)
}

/* 手机号 */
export function validatePhone(no) {
  // const re = /^1[0-9]{10}$/
  const re = /^1[3456789]\d{9}$/
  return re.test(no)
}

/* 身份证 */
export function validateIdCard(no) {
  const re = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
  return re.test(no)
}


/* 密码  8位以上由大小写字母、数字、特殊符号共同组成的无规则字符*/
export function validatePwd(no) {
  // const re = /^[A-Za-z0-9]{6,24}$/
  const re = /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[`~!@#$%^&*()_\-+=<>|.?,/:;'"{}\[\]].*).{9,}$/
  return re.test(no)
}

/* 长度 */
export function validateTextLang(no) {
  // const re = /^.{2,40}$/
  // return re.test(no)
  if (no.length >= 2 && no.length <= 40) {
    return true
  } else {
    return false
  }
}/* 自定义长度 */
export function validateTextLangMinMax(no,min,max) {
  // const re = /^.{2,40}$/
  // return re.test(no)
  no = String(no);
  if (no.length >= min && no.length <= max) {
    return true
  } else {
    return false
  }
}

/* 英文 数字 符号*/
export function validateVerNew(no) {
  const re = /^[A-Za-z0-9\-_\(\)（）.,。，!！@#$￥%^&*~…·——]{2,40}$/;
  return re.test(no)
}

/*英文、数字、符号*/
export function validateIdNo(val) {
  const reg = /^[^\u4E00-\u9FA5\s]{2,40}$/;
  return reg.test(val);
}

/*非空字符*/
export function validateVal(val) {
  const reg = /^[^\s]{2,40}$/;
  return reg.test(val);
}

/*姓名*/
export function validateName(val) {
  const reg = /^[\u4E00-\u9FA5\w\\.\s]{2,40}$/;
  return reg.test(val);
}

/*正整数*/
export function validateNumZZS(val) {
  const reg = /^[1-9]\d*$/;
  return reg.test(val);
}

/*正整数和0*/
export function validateNumZZSAndZero(val) {
  const reg = /^([0]|[1-9][0-9]*)$/;
  return reg.test(val);
}

/*正小数、正整数和0*/
export function validateNumZSAndZero(val) {
  const reg = /^(0|[1-9]\d*)(\s|$|\.\d{1,2}\b)/;
  return reg.test(val);
}

/*正小数*/
export function validateNumZXS(val) {
  const reg = /^\d+(\.\d+)?$/;
  return reg.test(val);
}

/*//正整数 或 1位小数*/
export function validateNumOne(val) {
  const reg = /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1})?$/;
  return reg.test(val);
}

/*//正整数 或 1/2位小数*/
export function validateNumTwo(val) {
  const reg = /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/;
  return reg.test(val);
}

export function validateNumThree(val) {
  const reg = /^-?\d+\.?\d{0,2}$/;
  return reg.test(val);
}

/*大于0小于100的数*/
export function validateNumber(val) {
  const reg = /^\d\.([1-9]{1,2}|[0-9][1-9])$|^[0-9]\d{0,1}(\.\d{1,2}){0,1}$|^100(\.0{1,2}){0,1}$/;
  return reg.test(val);
}
